/**
 * echarts柱状图类
 */
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
import Tool from "../tool"; // 引入工具类

/**
 * @导出区
 */
export default class Histogram extends Tool {
  // 构造函数
  // ---------------------------------------------------------------------------------------------
  constructor(id = "", data = [], xData = [], select = 0, width, height) {
    // 执行工具类的构造函数
    super(id, "histogram", null, select, width, height);

    // 只有当全部初始化内容验证通过时才能进行使用更新方法
    // ======================================================================
    this.classState && this.renew(data, xData);
  }

  /**
   * @更新方法
   * @data 数据渲染修改数组
   * @xData x轴信息修改数组
   * @select 修改 render选择成员数据，此参数为可选，如果需要修改则传入对应位置，不需要则是默认构造函数创建时的信息
   */
  // ---------------------------------------------------------------------------------------------
  renew = (data = [], xData, select) => {
    // 如果没有验证成功则不能执行此函数
    if (!this.classState) {
      return;
    }

    // 判断 select+xData 参数是否存在
    const isSelect = select !== undefined && select !== null;
    const isxData = xData !== undefined && xData !== null;

    // 进行批量错误检测
    // ======================================================================
    let errLIst = [{ type: "isData", parameter: data }]; // 错误检测数组

    // 感觉后续存在的参数进行判断是否要进行添加判断条件
    isxData && errLIst.push({ type: "isData", parameter: xData });
    isSelect && errLIst.push({ type: "isSelect", parameter: select });

    // 执行判断条件
    this.isError(errLIst);

    // 验证通过时，则可以执行后续方法
    // ======================================================================
    if (this.classState) {
      // 如果需要修改当前的渲染对象，则进行替换操作
      isSelect && (this.option = render[select]);

      //  修改对应的渲染参数
      this.option.series[0].data = data;
      isxData && (this.option.xAxis.data = xData);

      // 清理数据原本数据
      this.myChart.clear();

      // 执行绑定渲染的方法
      this.myChart.setOption(this.option);
    }
  };
}
